package com.wcj.test;

import com.wcj.linktable.ListNode;

/**
 * 输入两个无环的单向链表，找出它们的第一个公共结点，
 * 如果没有公共节点则返回空。
 * （注意因为传入数据是链表，所以错误测试数据的提示是用其他方式显示的，保证传入数据是正确的）
 */
public class 两个链表的第一个公共结点 {

    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode tmp = pHead1;
        ListNode tmp2 = pHead2;

        boolean flag1 = true;
        boolean flag2 = true;
        while (tmp != null && tmp2 != null){
            if (tmp == tmp2){
                return tmp;
            }else {
                if (tmp.next == null && flag1){
                    tmp = pHead2;
                    tmp2 = tmp2.next;
                    flag1 = false;
                    continue;
                }
                if (tmp2.next == null && flag2){
                    tmp2 = pHead1;
                    tmp = tmp.next;
                    flag2 = false;
                    continue;
                }
            }
            tmp = tmp.next;
            tmp2 = tmp2.next;
        }
        return null;
    }
}
